sqlite

推荐列表 站点导航

当前位置:首页 > 数据库 > sqlite >

Android 通用系列数据持久化(通用的SQLite封装)

来源:网络整理  作者:网友投稿  发布时间:2020-12-29 07:40
关键字SQLSQLite通用系列数据存储摘要:主要内容:本文介绍了封装后的SQLite,以便快速开发;只保留必要的定制,重...

SQL SQLite 通用系列 数据存储

摘要:

主要内容:
本文介绍了封装后的SQLite,以便快速开发;
只保留必要的定制,重复的代码封装到一个通用类中;

说明 LouSQLite.java文件为通用的代码,所有项目中不需要修改即可使用; MyCallBack.java文件是自定义的文件,关于项目的数据库配置都在这里进行,例如:数据库名称、数据库版本号、table语句等; LouSQLite.java支持常用的CRUD操作(支持事务); 代码 【用法】 使用方法 lists = Arrays.asList( new Phrase("窈窕淑女,君子好逑"), new Phrase("海上生明月,天涯共此时"), new Phrase("青青子衿,悠悠我心"), new Phrase("人生若只如初见") ); LouSQLite.insert(MyCallBack.TABLE_PHRASE, lists); // 更新到数据库 LouSQLite.update(MyCallBack.TABLE_PHRASE, phrase, MyCallBack.KEY_PHRASE_ID + "=http://www.it165.net/database/html/201607/?", new String[]{phrase.getId()}); // 查找 List lists = LouSQLite.query(MyCallBack.TABLE_PHRASE, "select * from " + MyCallBack.TABLE_PHRASE, null); // 从数据库中删除 LouSQLite.delete(MyCallBack.TABLE_PHRASE, MyCallBack.KEY_PHRASE_ID + "=http://www.it165.net/database/html/201607/?", new String[]{phrase.getId()});' data-snippet-id='ext.276d89f67b30182ceedfa7eb4506bd05' data-snippet-saved='false' data-codota-status='done'>// 初始化 LouSQLite.init(mContext, MyCallBack.getInstance()); Phrase phrase = new Phrase('青青子衿,悠悠我心'); // 插入一个数据到数据库 LouSQLite.insert(MyCallBack.TABLE_PHRASE, phrase); // 插入一组数据 List<Phrase> lists = Arrays.asList( new Phrase('窈窕淑女,君子好逑'), new Phrase('海上生明月,天涯共此时'), new Phrase('青青子衿,悠悠我心'), new Phrase('人生若只如初见') ); LouSQLite.insert(MyCallBack.TABLE_PHRASE, lists); // 更新到数据库 LouSQLite.update(MyCallBack.TABLE_PHRASE, phrase, MyCallBack.KEY_PHRASE_ID + '=http://www.it165.net/database/html/201607/?', new String[]{phrase.getId()}); // 查找 List<Phrase> lists = LouSQLite.query(MyCallBack.TABLE_PHRASE, 'select * from ' + MyCallBack.TABLE_PHRASE, null); // 从数据库中删除 LouSQLite.delete(MyCallBack.TABLE_PHRASE, MyCallBack.KEY_PHRASE_ID + '=http://www.it165.net/database/html/201607/?', new String[]{phrase.getId()}); 【数据库定制】 createTablesSQL() { return Arrays.asList( TABLE_PHRASE_SQL, TABLE_FAVORITE_SQL ); } @Override public String getName() { return DB_NAME; } @Override public int getVersion() { return DB_VERSION; } @Override public void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion) { case 0: db.execSQL(TABLE_FAVORITE_SQL); // 升级操作; case 1: break; default: break; } } @Override public void assignValuesByInstance(String tableName, T t, ContentValues values) { switch (tableName) { case TABLE_PHRASE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_PHRASE_ID, phrase.getId()); values.put(KEY_PHRASE_CONTENT, phrase.getContent()); values.put(KEY_PHRASE_FAVORITE, phrase.getFavorite()); } break; case TABLE_FAVORITE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_FAVORITE_ID, phrase.getId()); values.put(KEY_FAVORITE_CONTENT, phrase.getContent()); values.put(KEY_FAVORITE_FAVORITE, phrase.getFavorite()); } break; } } @Override public Object newInstanceByCursor(String tableName, Cursor cursor) { switch (tableName) { case TABLE_PHRASE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_PHRASE_ID)), cursor.getString(cursor.getColumnIndex(KEY_PHRASE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_PHRASE_FAVORITE)) ); case TABLE_FAVORITE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_ID)), cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_FAVORITE_FAVORITE)) ); } return null; } } ' data-snippet-id='ext.2f8e0087efc4bc22327aa5b639d59242' data-snippet-saved='false' data-codota-status='done'>//: MyCallBack.java package com.lyloou.lou.db; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.lyloou.lou.bean.Phrase; import java.util.Arrays; import java.util.List; /** * 类描述: * 创建人: Lou * 创建时间: 2016/7/13 14:22 * 修改人: Lou * 修改时间:2016/7/13 14:22 * 修改备注: */ public class MyCallBack implements LouSQLite.ICallBack { private static final String TAG = 'MyCallBack'; private MyCallBack() { } private static LouSQLite.ICallBack INSTANCE; public static LouSQLite.ICallBack getInstance() { if (INSTANCE == null) { INSTANCE = new MyCallBack(); } return INSTANCE; } /////////////////////////////////////////////////////////////////////////// // db config /////////////////////////////////////////////////////////////////////////// public static final String DB_NAME = 'DBNAME.db'; public static final int DB_VERSION = 1; /////////////////////////////////////////////////////////////////////////// // table phrase /////////////////////////////////////////////////////////////////////////// public static final String TABLE_PHRASE = 'phrase'; public static final String KEY_PHRASE_ID = 'PHRASE_ID'; private static final String KEY_PHRASE_CONTENT = 'PHRASE_CONTENT'; private static final String KEY_PHRASE_FAVORITE = 'PHRASE_FAVORITE'; private static final String TABLE_PHRASE_SQL = 'create table ' + TABLE_PHRASE + ' (' + 'id integer primary key autoincrement, ' + KEY_PHRASE_ID + ' text, ' + KEY_PHRASE_CONTENT + ' text, ' + KEY_PHRASE_FAVORITE + ' integer' + ')'; /////////////////////////////////////////////////////////////////////////// // table favorite /////////////////////////////////////////////////////////////////////////// public static final String TABLE_FAVORITE = 'favorite'; public static final String KEY_FAVORITE_ID = 'FAVORITE_ID'; private static final String KEY_FAVORITE_CONTENT = 'FAVORITE_CONTENT'; private static final String KEY_FAVORITE_FAVORITE = 'FAVORITE_FAVORITE'; private static final String TABLE_FAVORITE_SQL = 'create table ' + TABLE_FAVORITE + ' (' + 'id integer primary key autoincrement, ' + KEY_FAVORITE_ID + ' text, ' + KEY_FAVORITE_CONTENT + ' text,' + KEY_FAVORITE_FAVORITE + ' integer' + ')'; /////////////////////////////////////////////////////////////////////////// // overrite /////////////////////////////////////////////////////////////////////////// @Override public List<String> createTablesSQL() { return Arrays.asList( TABLE_PHRASE_SQL, TABLE_FAVORITE_SQL ); } @Override public String getName() { return DB_NAME; } @Override public int getVersion() { return DB_VERSION; } @Override public void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion) { case 0: db.execSQL(TABLE_FAVORITE_SQL); // 升级操作; case 1: break; default: break; } } @Override public <T> void assignValuesByInstance(String tableName, T t, ContentValues values) { switch (tableName) { case TABLE_PHRASE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_PHRASE_ID, phrase.getId()); values.put(KEY_PHRASE_CONTENT, phrase.getContent()); values.put(KEY_PHRASE_FAVORITE, phrase.getFavorite()); } break; case TABLE_FAVORITE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_FAVORITE_ID, phrase.getId()); values.put(KEY_FAVORITE_CONTENT, phrase.getContent()); values.put(KEY_FAVORITE_FAVORITE, phrase.getFavorite()); } break; } } @Override public Object newInstanceByCursor(String tableName, Cursor cursor) { switch (tableName) { case TABLE_PHRASE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_PHRASE_ID)), cursor.getString(cursor.getColumnIndex(KEY_PHRASE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_PHRASE_FAVORITE)) ); case TABLE_FAVORITE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_ID)), cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_FAVORITE_FAVORITE)) ); } return null; } } //: Pharse.java package com.lyloou.lou.bean; import java.util.UUID; /** * 类描述: * 创建人: Lou * 创建时间: 2016/7/12 9:49 * 修改人: Lou * 修改时间:2016/7/12 9:49 * 修改备注: */ public class Phrase { private String mId; private String mContent; private int mFavorite; // 0表示未收藏,1表示已收藏; public Phrase(String content) { this(UUID.randomUUID().toString(), content, 0); } public Phrase(String content, int favorite) { this(UUID.randomUUID().toString(), content, favorite); } public Phrase(String id, String content, int favorite) { mId = id; mContent = content; mFavorite = favorite; } public String getId() { return mId; } public void setId(String id) { mId = id; } public String getContent() { return mContent; } public void setContent(String content) { mContent = content; } public int getFavorite() { return mFavorite; } public void setFavorite(int favorite) { mFavorite = favorite; } } 【通用源码】 createTablesSQL(); void assignValuesByInstance(String tableName, T t, ContentValues values); T newInstanceByCursor(String tableName, Cursor cursor); } private static final String ILLEGAL_OPREATION = "非法操作,请先进行初始化操作:LouSQLite.init()"; private static LouSQLite INSTANCE; public static void init(Context context, ICallBack callBack) { if (INSTANCE == null) { INSTANCE = new LouSQLite(context, callBack); } } public static void insert(String tableName, T t) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void insert(String tableName, List ts) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void update(String tableName, T t, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void update(String tableName, List ts, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void delete(String tableName, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { db.delete(tableName, whereClause, whereArgs); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static List query(String tableName, @NonNull String queryStr, @Nullable String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } List lists = new ArrayList<>(); SQLiteDatabase db = INSTANCE.getReadableDatabase(); db.beginTransaction(); try { db.setTransactionSuccessful(); Cursor cursor = db.rawQuery(queryStr, whereArgs); if (cursor.moveToFirst()) { do { T tt = INSTANCE.mCallBack.newInstanceByCursor(tableName, cursor); if (tt != null) { lists.add(tt); } } while (cursor.moveToNext()); } cursor.close(); } finally { db.endTransaction(); db.close(); } return lists; } /////////////////////////////////////////////////////////////////////////// // Self /////////////////////////////////////////////////////////////////////////// private final ICallBack mCallBack; private static final String TAG = "LouSQLite"; private LouSQLite(@NonNull Context context, @NonNull ICallBack callBack) { super(context, callBack.getName(), null, callBack.getVersion()); mCallBack = callBack; } @Override public void onCreate(SQLiteDatabase db) { for (String create_table : mCallBack.createTablesSQL()) { db.execSQL(create_table); Log.d(TAG, "create table " + "[ " + create_table + " ]" + " successful! "); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { mCallBack.doUpgrade(sqLiteDatabase, oldVersion, newVersion); } } ' data-snippet-id='ext.11a8b43c3fe96cada084d84e93618e2f' data-snippet-saved='false' data-codota-status='done'>//: LouSQLite.java package com.lyloou.lou.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import java.util.ArrayList; import java.util.List; /** * 类描述:一个通用的SQLite,通过简单的配置快速搭建一个数据库存储方案; * 创建人: Lou * 创建时间: 2016/7/13 10:10 * 修改人: Lou * 修改时间:2016/7/13 10:10 * 修改备注: */ public class LouSQLite extends SQLiteOpenHelper { public interface ICallBack { String getName(); int getVersion(); void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion); List<String> createTablesSQL(); <T> void assignValuesByInstance(String tableName, T t, ContentValues values); <T> T newInstanceByCursor(String tableName, Cursor cursor); } private static final String ILLEGAL_OPREATION = '非法操作,请先进行初始化操作:LouSQLite.init()'; private static LouSQLite INSTANCE; public static void init(Context context, ICallBack callBack) { if (INSTANCE == null) { INSTANCE = new LouSQLite(context, callBack); } } public static <T> void insert(String tableName, T t) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void insert(String tableName, List<T> ts) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void update(String tableName, T t, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void update(String tableName, List<T> ts, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void delete(String tableName, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { db.delete(tableName, whereClause, whereArgs); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> List<T> query(String tableName, @NonNull String queryStr, @Nullable String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } List<T> lists = new ArrayList<>(); SQLiteDatabase db = INSTANCE.getReadableDatabase(); db.beginTransaction(); try { db.setTransactionSuccessful(); Cursor cursor = db.rawQuery(queryStr, whereArgs); if (cursor.moveToFirst()) { do { T tt = INSTANCE.mCallBack.newInstanceByCursor(tableName, cursor); if (tt != null) { lists.add(tt); } } while (cursor.moveToNext()); } cursor.close(); } finally { db.endTransaction(); db.close(); } return lists; } /////////////////////////////////////////////////////////////////////////// // Self /////////////////////////////////////////////////////////////////////////// private final ICallBack mCallBack; private static final String TAG = 'LouSQLite'; private LouSQLite(@NonNull Context context, @NonNull ICallBack callBack) { super(context, callBack.getName(), null, callBack.getVersion()); mCallBack = callBack; } @Override public void onCreate(SQLiteDatabase db) { for (String create_table : mCallBack.createTablesSQL()) { db.execSQL(create_table); Log.d(TAG, 'create table ' + '[ ' + create_table + ' ]' + ' successful! '); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { mCallBack.doUpgrade(sqLiteDatabase, oldVersion, newVersion); } }

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/sqlite/10592.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Android 通用系列数据持久化(通用的SQLite封装)

2020-12-29 编辑:网友投稿

SQL SQLite 通用系列 数据存储

摘要:

主要内容:
本文介绍了封装后的SQLite,以便快速开发;
只保留必要的定制,重复的代码封装到一个通用类中;

说明 LouSQLite.java文件为通用的代码,所有项目中不需要修改即可使用; MyCallBack.java文件是自定义的文件,关于项目的数据库配置都在这里进行,例如:数据库名称、数据库版本号、table语句等; LouSQLite.java支持常用的CRUD操作(支持事务); 代码 【用法】 使用方法 lists = Arrays.asList( new Phrase("窈窕淑女,君子好逑"), new Phrase("海上生明月,天涯共此时"), new Phrase("青青子衿,悠悠我心"), new Phrase("人生若只如初见") ); LouSQLite.insert(MyCallBack.TABLE_PHRASE, lists); // 更新到数据库 LouSQLite.update(MyCallBack.TABLE_PHRASE, phrase, MyCallBack.KEY_PHRASE_ID + "=http://www.it165.net/database/html/201607/?", new String[]{phrase.getId()}); // 查找 List lists = LouSQLite.query(MyCallBack.TABLE_PHRASE, "select * from " + MyCallBack.TABLE_PHRASE, null); // 从数据库中删除 LouSQLite.delete(MyCallBack.TABLE_PHRASE, MyCallBack.KEY_PHRASE_ID + "=http://www.it165.net/database/html/201607/?", new String[]{phrase.getId()});' data-snippet-id='ext.276d89f67b30182ceedfa7eb4506bd05' data-snippet-saved='false' data-codota-status='done'>// 初始化 LouSQLite.init(mContext, MyCallBack.getInstance()); Phrase phrase = new Phrase('青青子衿,悠悠我心'); // 插入一个数据到数据库 LouSQLite.insert(MyCallBack.TABLE_PHRASE, phrase); // 插入一组数据 List<Phrase> lists = Arrays.asList( new Phrase('窈窕淑女,君子好逑'), new Phrase('海上生明月,天涯共此时'), new Phrase('青青子衿,悠悠我心'), new Phrase('人生若只如初见') ); LouSQLite.insert(MyCallBack.TABLE_PHRASE, lists); // 更新到数据库 LouSQLite.update(MyCallBack.TABLE_PHRASE, phrase, MyCallBack.KEY_PHRASE_ID + '=http://www.it165.net/database/html/201607/?', new String[]{phrase.getId()}); // 查找 List<Phrase> lists = LouSQLite.query(MyCallBack.TABLE_PHRASE, 'select * from ' + MyCallBack.TABLE_PHRASE, null); // 从数据库中删除 LouSQLite.delete(MyCallBack.TABLE_PHRASE, MyCallBack.KEY_PHRASE_ID + '=http://www.it165.net/database/html/201607/?', new String[]{phrase.getId()}); 【数据库定制】 createTablesSQL() { return Arrays.asList( TABLE_PHRASE_SQL, TABLE_FAVORITE_SQL ); } @Override public String getName() { return DB_NAME; } @Override public int getVersion() { return DB_VERSION; } @Override public void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion) { case 0: db.execSQL(TABLE_FAVORITE_SQL); // 升级操作; case 1: break; default: break; } } @Override public void assignValuesByInstance(String tableName, T t, ContentValues values) { switch (tableName) { case TABLE_PHRASE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_PHRASE_ID, phrase.getId()); values.put(KEY_PHRASE_CONTENT, phrase.getContent()); values.put(KEY_PHRASE_FAVORITE, phrase.getFavorite()); } break; case TABLE_FAVORITE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_FAVORITE_ID, phrase.getId()); values.put(KEY_FAVORITE_CONTENT, phrase.getContent()); values.put(KEY_FAVORITE_FAVORITE, phrase.getFavorite()); } break; } } @Override public Object newInstanceByCursor(String tableName, Cursor cursor) { switch (tableName) { case TABLE_PHRASE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_PHRASE_ID)), cursor.getString(cursor.getColumnIndex(KEY_PHRASE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_PHRASE_FAVORITE)) ); case TABLE_FAVORITE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_ID)), cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_FAVORITE_FAVORITE)) ); } return null; } } ' data-snippet-id='ext.2f8e0087efc4bc22327aa5b639d59242' data-snippet-saved='false' data-codota-status='done'>//: MyCallBack.java package com.lyloou.lou.db; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.lyloou.lou.bean.Phrase; import java.util.Arrays; import java.util.List; /** * 类描述: * 创建人: Lou * 创建时间: 2016/7/13 14:22 * 修改人: Lou * 修改时间:2016/7/13 14:22 * 修改备注: */ public class MyCallBack implements LouSQLite.ICallBack { private static final String TAG = 'MyCallBack'; private MyCallBack() { } private static LouSQLite.ICallBack INSTANCE; public static LouSQLite.ICallBack getInstance() { if (INSTANCE == null) { INSTANCE = new MyCallBack(); } return INSTANCE; } /////////////////////////////////////////////////////////////////////////// // db config /////////////////////////////////////////////////////////////////////////// public static final String DB_NAME = 'DBNAME.db'; public static final int DB_VERSION = 1; /////////////////////////////////////////////////////////////////////////// // table phrase /////////////////////////////////////////////////////////////////////////// public static final String TABLE_PHRASE = 'phrase'; public static final String KEY_PHRASE_ID = 'PHRASE_ID'; private static final String KEY_PHRASE_CONTENT = 'PHRASE_CONTENT'; private static final String KEY_PHRASE_FAVORITE = 'PHRASE_FAVORITE'; private static final String TABLE_PHRASE_SQL = 'create table ' + TABLE_PHRASE + ' (' + 'id integer primary key autoincrement, ' + KEY_PHRASE_ID + ' text, ' + KEY_PHRASE_CONTENT + ' text, ' + KEY_PHRASE_FAVORITE + ' integer' + ')'; /////////////////////////////////////////////////////////////////////////// // table favorite /////////////////////////////////////////////////////////////////////////// public static final String TABLE_FAVORITE = 'favorite'; public static final String KEY_FAVORITE_ID = 'FAVORITE_ID'; private static final String KEY_FAVORITE_CONTENT = 'FAVORITE_CONTENT'; private static final String KEY_FAVORITE_FAVORITE = 'FAVORITE_FAVORITE'; private static final String TABLE_FAVORITE_SQL = 'create table ' + TABLE_FAVORITE + ' (' + 'id integer primary key autoincrement, ' + KEY_FAVORITE_ID + ' text, ' + KEY_FAVORITE_CONTENT + ' text,' + KEY_FAVORITE_FAVORITE + ' integer' + ')'; /////////////////////////////////////////////////////////////////////////// // overrite /////////////////////////////////////////////////////////////////////////// @Override public List<String> createTablesSQL() { return Arrays.asList( TABLE_PHRASE_SQL, TABLE_FAVORITE_SQL ); } @Override public String getName() { return DB_NAME; } @Override public int getVersion() { return DB_VERSION; } @Override public void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion) { case 0: db.execSQL(TABLE_FAVORITE_SQL); // 升级操作; case 1: break; default: break; } } @Override public <T> void assignValuesByInstance(String tableName, T t, ContentValues values) { switch (tableName) { case TABLE_PHRASE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_PHRASE_ID, phrase.getId()); values.put(KEY_PHRASE_CONTENT, phrase.getContent()); values.put(KEY_PHRASE_FAVORITE, phrase.getFavorite()); } break; case TABLE_FAVORITE: if (t instanceof Phrase) { Phrase phrase = (Phrase) t; values.put(KEY_FAVORITE_ID, phrase.getId()); values.put(KEY_FAVORITE_CONTENT, phrase.getContent()); values.put(KEY_FAVORITE_FAVORITE, phrase.getFavorite()); } break; } } @Override public Object newInstanceByCursor(String tableName, Cursor cursor) { switch (tableName) { case TABLE_PHRASE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_PHRASE_ID)), cursor.getString(cursor.getColumnIndex(KEY_PHRASE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_PHRASE_FAVORITE)) ); case TABLE_FAVORITE: return new Phrase( cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_ID)), cursor.getString(cursor.getColumnIndex(KEY_FAVORITE_CONTENT)), cursor.getInt(cursor.getColumnIndex(KEY_FAVORITE_FAVORITE)) ); } return null; } } //: Pharse.java package com.lyloou.lou.bean; import java.util.UUID; /** * 类描述: * 创建人: Lou * 创建时间: 2016/7/12 9:49 * 修改人: Lou * 修改时间:2016/7/12 9:49 * 修改备注: */ public class Phrase { private String mId; private String mContent; private int mFavorite; // 0表示未收藏,1表示已收藏; public Phrase(String content) { this(UUID.randomUUID().toString(), content, 0); } public Phrase(String content, int favorite) { this(UUID.randomUUID().toString(), content, favorite); } public Phrase(String id, String content, int favorite) { mId = id; mContent = content; mFavorite = favorite; } public String getId() { return mId; } public void setId(String id) { mId = id; } public String getContent() { return mContent; } public void setContent(String content) { mContent = content; } public int getFavorite() { return mFavorite; } public void setFavorite(int favorite) { mFavorite = favorite; } } 【通用源码】 createTablesSQL(); void assignValuesByInstance(String tableName, T t, ContentValues values); T newInstanceByCursor(String tableName, Cursor cursor); } private static final String ILLEGAL_OPREATION = "非法操作,请先进行初始化操作:LouSQLite.init()"; private static LouSQLite INSTANCE; public static void init(Context context, ICallBack callBack) { if (INSTANCE == null) { INSTANCE = new LouSQLite(context, callBack); } } public static void insert(String tableName, T t) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void insert(String tableName, List ts) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void update(String tableName, T t, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void update(String tableName, List ts, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void delete(String tableName, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { db.delete(tableName, whereClause, whereArgs); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static List query(String tableName, @NonNull String queryStr, @Nullable String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } List lists = new ArrayList<>(); SQLiteDatabase db = INSTANCE.getReadableDatabase(); db.beginTransaction(); try { db.setTransactionSuccessful(); Cursor cursor = db.rawQuery(queryStr, whereArgs); if (cursor.moveToFirst()) { do { T tt = INSTANCE.mCallBack.newInstanceByCursor(tableName, cursor); if (tt != null) { lists.add(tt); } } while (cursor.moveToNext()); } cursor.close(); } finally { db.endTransaction(); db.close(); } return lists; } /////////////////////////////////////////////////////////////////////////// // Self /////////////////////////////////////////////////////////////////////////// private final ICallBack mCallBack; private static final String TAG = "LouSQLite"; private LouSQLite(@NonNull Context context, @NonNull ICallBack callBack) { super(context, callBack.getName(), null, callBack.getVersion()); mCallBack = callBack; } @Override public void onCreate(SQLiteDatabase db) { for (String create_table : mCallBack.createTablesSQL()) { db.execSQL(create_table); Log.d(TAG, "create table " + "[ " + create_table + " ]" + " successful! "); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { mCallBack.doUpgrade(sqLiteDatabase, oldVersion, newVersion); } } ' data-snippet-id='ext.11a8b43c3fe96cada084d84e93618e2f' data-snippet-saved='false' data-codota-status='done'>//: LouSQLite.java package com.lyloou.lou.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import java.util.ArrayList; import java.util.List; /** * 类描述:一个通用的SQLite,通过简单的配置快速搭建一个数据库存储方案; * 创建人: Lou * 创建时间: 2016/7/13 10:10 * 修改人: Lou * 修改时间:2016/7/13 10:10 * 修改备注: */ public class LouSQLite extends SQLiteOpenHelper { public interface ICallBack { String getName(); int getVersion(); void doUpgrade(SQLiteDatabase db, int oldVersion, int newVersion); List<String> createTablesSQL(); <T> void assignValuesByInstance(String tableName, T t, ContentValues values); <T> T newInstanceByCursor(String tableName, Cursor cursor); } private static final String ILLEGAL_OPREATION = '非法操作,请先进行初始化操作:LouSQLite.init()'; private static LouSQLite INSTANCE; public static void init(Context context, ICallBack callBack) { if (INSTANCE == null) { INSTANCE = new LouSQLite(context, callBack); } } public static <T> void insert(String tableName, T t) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void insert(String tableName, List<T> ts) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.insert(tableName, null, values); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void update(String tableName, T t, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> void update(String tableName, List<T> ts, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { ContentValues values = new ContentValues(); for (T t : ts) { INSTANCE.mCallBack.assignValuesByInstance(tableName, t, values); db.update(tableName, values, whereClause, whereArgs); values.clear(); } db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static void delete(String tableName, String whereClause, String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } SQLiteDatabase db = INSTANCE.getWritableDatabase(); db.beginTransaction(); try { db.delete(tableName, whereClause, whereArgs); db.setTransactionSuccessful(); } finally { db.endTransaction(); db.close(); } } public static <T> List<T> query(String tableName, @NonNull String queryStr, @Nullable String[] whereArgs) { if (INSTANCE == null) { throw new IllegalStateException(ILLEGAL_OPREATION); } List<T> lists = new ArrayList<>(); SQLiteDatabase db = INSTANCE.getReadableDatabase(); db.beginTransaction(); try { db.setTransactionSuccessful(); Cursor cursor = db.rawQuery(queryStr, whereArgs); if (cursor.moveToFirst()) { do { T tt = INSTANCE.mCallBack.newInstanceByCursor(tableName, cursor); if (tt != null) { lists.add(tt); } } while (cursor.moveToNext()); } cursor.close(); } finally { db.endTransaction(); db.close(); } return lists; } /////////////////////////////////////////////////////////////////////////// // Self /////////////////////////////////////////////////////////////////////////// private final ICallBack mCallBack; private static final String TAG = 'LouSQLite'; private LouSQLite(@NonNull Context context, @NonNull ICallBack callBack) { super(context, callBack.getName(), null, callBack.getVersion()); mCallBack = callBack; } @Override public void onCreate(SQLiteDatabase db) { for (String create_table : mCallBack.createTablesSQL()) { db.execSQL(create_table); Log.d(TAG, 'create table ' + '[ ' + create_table + ' ]' + ' successful! '); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { mCallBack.doUpgrade(sqLiteDatabase, oldVersion, newVersion); } }

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/sqlite/10592.shtml

相关文章

风云图片

推荐阅读

返回sqlite频道首页